/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package LogicaNegocio.Controlador;

import AccesoDatos.Persistencia.Manager.ManagerEmpleado;
import AccesoDatos.Persistencia.Manager.ManagerInformes;
import GUI.Jefe.AdminBibliotecarios.PanelBuscarBibliotecario;
import LogicaNegocio.Empleados.Bibliotecario;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/**
 * Esta clase en java permite el control de eventos
 * para la busqueda de bibliotecarios en el sistema.
 *
 * @author sebaxtian
 * Archivo: ControlBuscarBibliotecario.java
 * @version 1.0
 * Fecha: jue may 13 22:30:44 COT 2010
 */


public class ControlBuscarBibliotecario {

    //Atributos de clase
    private PanelBuscarBibliotecario panelBuscar;
    private ManagerInformes gestorInformes;
    private ManagerEmpleado gestorEmpleado;


    public ControlBuscarBibliotecario(PanelBuscarBibliotecario panelBuscar) {
        this.panelBuscar = panelBuscar;
        gestorInformes = new ManagerInformes();
        gestorEmpleado = new ManagerEmpleado();
    }

    public void buscarBibliotecario() {
        try{
            int numeroCedula = -1;
            if(panelBuscar.textFieldCedulaBuscar.getText() != null && !panelBuscar.textFieldCedulaBuscar.getText().equals("")){
                 numeroCedula = Integer.parseInt(panelBuscar.textFieldCedulaBuscar.getText());
            }
            String primerApellido = panelBuscar.textFieldPrimerApellidoBuscar.getText().equals("") ? null : panelBuscar.textFieldPrimerApellidoBuscar.getText();
            String primerNombre = panelBuscar.textFieldPrimerNombreBuscar.getText().equals("") ? null : panelBuscar.textFieldPrimerNombreBuscar.getText();
            String segundoApellido = panelBuscar.textFieldSegundoApellidoBuscar.getText().equals("") ? null : panelBuscar.textFieldSegundoApellidoBuscar.getText();
            String segundoNombre = panelBuscar.textFieldSegundoNombreBuscar.getText().equals("") ? null : panelBuscar.textFieldSegundoNombreBuscar.getText();
            List<Bibliotecario> listaBibliotecarios = new ArrayList<Bibliotecario>();
            listaBibliotecarios = gestorInformes.obtenerBibliotecarios(numeroCedula, primerNombre, primerApellido, segundoNombre, segundoApellido);
            if(!listaBibliotecarios.isEmpty()){
                JOptionPane.showMessageDialog(panelBuscar, "La busqueda SI arrojo resultados", "Buscar", JOptionPane.PLAIN_MESSAGE);
                mostrarResultados(listaBibliotecarios);
            }else{
                JOptionPane.showMessageDialog(panelBuscar, "La busqueda NO arrojo resultados", "Buscar", JOptionPane.PLAIN_MESSAGE);
            }
        }catch (NumberFormatException ex) {
            JOptionPane.showMessageDialog(panelBuscar, "El numero de cedula solo permite caracteres numericos", "Error Cedula", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void mostrarResultados(List<Bibliotecario> listaBibliotecarios) {
        Bibliotecario biblotecario;
        for(int i = 0; i < listaBibliotecarios.size(); i++){
            if(panelBuscar.tablaResultadoBuscar.getRowCount() <= i){
                DefaultTableModel tmp = (DefaultTableModel)panelBuscar.tablaResultadoBuscar.getModel();
                Object fila[] = {"",""};
                tmp.addRow(fila);
            }
            biblotecario = listaBibliotecarios.get(i);
            panelBuscar.tablaResultadoBuscar.setValueAt(biblotecario.getCedula(), i, 0);
            String nombreCompleto;
            nombreCompleto = biblotecario.getPrimerNombre()+" ";
            if(biblotecario.getSegundoNombre() != null){
                nombreCompleto += biblotecario.getSegundoNombre()+" ";
            }
            nombreCompleto += biblotecario.getPrimerApellido()+" ";
            if(biblotecario.getSegundoApellido() != null){
                nombreCompleto += biblotecario.getSegundoApellido();
            }
            panelBuscar.tablaResultadoBuscar.setValueAt(nombreCompleto, i, 1);
        }
    }

    public void verDatos() {
        Bibliotecario bibliotecario;
        int numeroCedula = -1;
        int fila = panelBuscar.tablaResultadoBuscar.getSelectedRow();
        if(fila != -1){
            try {
                numeroCedula = Integer.parseInt(panelBuscar.tablaResultadoBuscar.getValueAt(fila, 0).toString());
                bibliotecario = gestorEmpleado.obtenerBibliotecario(numeroCedula);
                panelBuscar.textFieldCedula.setText(bibliotecario.getCedula() + "");
                panelBuscar.textFieldDireccion.setText(bibliotecario.getDireccion());
                panelBuscar.textFieldPrimerApellido.setText(bibliotecario.getPrimerApellido());
                panelBuscar.textFieldPrimerNombre.setText(bibliotecario.getPrimerNombre());
                panelBuscar.textFieldSegundoApellido.setText(bibliotecario.getSegundoApellido());
                panelBuscar.textFieldSegundoNombre.setText(bibliotecario.getSegundoNombre());
                panelBuscar.textFieldTelefono.setText(bibliotecario.getTelefono());
                panelBuscar.textFieldUniversidad.setText(bibliotecario.getUniversidad());
                panelBuscar.checkBoxVinculado.setSelected(bibliotecario.getVinculado());
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(panelBuscar, ex.getMessage(), "Error Obtener Bibliotecario", JOptionPane.ERROR_MESSAGE);
            }
        }
    }
}
